package com.zust.zst.dao.mapper.studentstatus;

import com.zust.zst.common.dto.chooselesson.AddCourseDTO;
import com.zust.zst.common.dto.score.AddScoreDTO;
import com.zust.zst.common.dto.studentstatus.AddStudentDTO;
import com.zust.zst.common.dto.studentstatus.SearchCollegeStudentDTO;
import com.zust.zst.common.dto.studentstatus.SearchCollegeStudentByUidAndNameDTO;
import com.zust.zst.common.dto.studentstatus.SearchTotalCollegeStudentByUidAndNameDTO;
import com.zust.zst.common.vo.chooselesson.CourseInfoVO;
import com.zust.zst.common.vo.studentstatus.StudentInfoVO;
import com.zust.zst.common.vo.studentstatus.StudentUpdateVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 学生信息管理dao
 *
 * @author ldnb
 * @date 2022/11/24 16:03
 */
@Mapper
public interface StudentInfoManagementMapper {

    /**
     * 通过教务工号获取所属学院id
     */
    int getCollegeIdByUid(@Param("uid") int uid);

    /**
     * 获取当前教务所属学院的所有专业名
     */
    List<String> getAllMajors(@Param("uid") int uid);

    /**
     * 获取当前所选专业的所有班级名
     */
    List<String> getAllMajorClazzs(@Param("mid") int mid);

    /**
     * 通过专业名获取专业id
     */
    int getMajorIdByName(@Param("name") String major);

    /**
     * 通过班级名获取班级id
     */
    int getClazzIdByName(@Param("name") String clazz);

    /**
     * 添加学生学籍信息
     */
    int addStudent(@Param("collegeId") int collegeId, @Param("majorId") int majorId,
                   @Param("clazzId") int clazzId , @Param("addStudentDTO") AddStudentDTO addStudentDTO);

    /**
     * 获取当前教务/管理员所属学院的全部学生
     */
    List<StudentInfoVO> getCollegeStudent(@Param("uid") int uid, @Param("dto") SearchCollegeStudentDTO dto);

    /**
     * 获取当前教务/管理员所属学院的全部学生信息条数
     */
    int getTotalLineCollegeStudent(@Param("uid") int uid);

    /**
     * 获得对应学号、姓名的本院学生信息
     */
    List<StudentInfoVO> getCollegeStudentByUidAndName(@Param("uid") int uid, @Param("dto") SearchCollegeStudentByUidAndNameDTO dto);

    /**
     * 获得对应学号、姓名的本院学生信息条数
     */
    int getTotalLineCollegeStudentByUidAndName(@Param("uid") int uid, @Param("dto") SearchTotalCollegeStudentByUidAndNameDTO dto);

    /**
     * 更新学生信息
     */
    int updateStudent(@Param("dto") StudentUpdateVO studentUpdateVO);
}
